package com.vviton.zyhj.enterprise.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.vviton.zyhj.common.base.BaseService;
import com.vviton.zyhj.common.common.CodeConstants;
import com.vviton.zyhj.common.common.CommonConstants;
import com.vviton.zyhj.common.common.ValidatorConstants;
import com.vviton.zyhj.common.dao.TYyxtCodeMapper;
import com.vviton.zyhj.common.dao.TYyxtHzglHzgxbMapper;
import com.vviton.zyhj.common.entity.TYyxtCode;
import com.vviton.zyhj.common.entity.TYyxtHzglHzgxb;
import com.vviton.zyhj.common.utils.ErrorBean;
import com.vviton.zyhj.common.utils.ResultJson;
import com.vviton.zyhj.common.view.ParamJszhxx;
import com.vviton.zyhj.common.view.ParamTjsh;
import com.vviton.zyhj.common.view.ViewJshzxx;
import com.vviton.zyhj.enterprise.service.JshzService;

/**
 * ClassName: JshzServiceImpl <br/>
 * Function: 结束合作. <br/>
 * Date: 2016年11月16日 上午9:39:21 <br/>
 *
 * @author zhucb
 * @version 1.0
 * @since JDK 1.7
 */
@Service("jshzService")
public class JshzServiceImpl extends BaseService implements JshzService {
    /** 日志 */
    private static Logger logger = Logger.getLogger(JshzServiceImpl.class);
    /** 合作方关系Mapper */
    @Autowired
    private TYyxtHzglHzgxbMapper tYyxtHzglHzgxbMapper;
    /** 码表Mapper */
    @Autowired
    private TYyxtCodeMapper tYyxtCodeMapper;

    /**
     * updateJsHzxx,更新结束合作信息. <br/>
     * Author: zhucb <br/>
     * Create Date: 2016年11月16日 <br/>
     * =============================================================== <br/>
     * Modifier: zhucb <br/>
     * Modify Date: 2016年11月16日 <br/>
     * Modify Description: <br/>
     * =============================================================== <br/>
     *
     * @param paramJszhxx 结束合作参数
     * @return ResultJson
     * @since JDK 1.7
     */
    @Override
    public ResultJson updateJsHzxx(ParamJszhxx paramJszhxx) {
        ResultJson resultJson = new ResultJson(false);
        TYyxtHzglHzgxb hzgxb = new TYyxtHzglHzgxb();
        hzgxb.setZh(paramJszhxx.getZh());
        hzgxb.setXyzt(CodeConstants.XYZT_JSHZ);
        hzgxb.setJshzyy(paramJszhxx.getJsyy());
        hzgxb.setJshzsm(paramJszhxx.getJssm());
        hzgxb.setDelflag(CommonConstants.DELFLAG_UPDATE);
        hzgxb.setVersions(this.getVersion());
        hzgxb.setOperatercode(paramJszhxx.getZh());
        hzgxb.setOperatetime(new Date());
        int cnt = tYyxtHzglHzgxbMapper.updateJsHzxx(hzgxb);
        if (cnt > 0) {
            resultJson.setResult(true);
        }
        return resultJson;
    }

    /**
     * getHzgxbList,获取结束合作信息. <br/>
     * Author: zhucb <br/>
     * Create Date: 2016年11月16日 <br/>
     * =============================================================== <br/>
     * Modifier: zhucb <br/>
     * Modify Date: 2016年11月16日 <br/>
     * Modify Description: <br/>
     * =============================================================== <br/>
     *
     * @param zh 账号
     * @param ywy 业务域
     * @return ViewJshzxx
     * @since JDK 1.7
     */
    @Override
    public ViewJshzxx getHzgxbList(String zh, String ywy) {
        ViewJshzxx viewJshzxx = new ViewJshzxx();
        TYyxtHzglHzgxb hzgxb = tYyxtHzglHzgxbMapper.getHzgxbxx(zh, ywy);
        if (hzgxb == null) {
            return new ViewJshzxx();
        }
        CommonConstants.copyProperties(viewJshzxx, hzgxb);
        //获取Code码
        List<TYyxtCode> codeList = tYyxtCodeMapper.getYyxtCodeListByCodeclass(CodeConstants.JSHZYY);
        viewJshzxx.setViewJsyy(codeList);
        return viewJshzxx;
    }

    /**
     *
     * updateTjsh,新增提交审核状态. <br/>
     * Author: tangli <br/>
     * Create Date: 2016年11月16日 <br/>
     * =============================================================== <br/>
     * Modifier: tangli <br/>
     * Modify Date: 2016年11月16日 <br/>
     * Modify Description: <br/>
     * =============================================================== <br/>
     *
     * @param paramTjsh 参数
     * @return ResultJson
     * @since JDK 1.7
     */
    @Override
    public ResultJson insertTjsh(ParamTjsh paramTjsh) {

        ResultJson resultJson = new ResultJson(false);
        logger.info("新增提交审核开始");

        //通过rest_ul方式获取业务域字段值
        if (StringUtils.isNotBlank(paramTjsh.getDomain())) {
            String cmsorgcode = com.vviton.zyhj.content.CommonConstants.getCmsorgcode(paramTjsh.getDomain());
            paramTjsh.setYwy(cmsorgcode);
        } else {
            //如果为空，则默认为伟东教育-业务域
            if (StringUtils.isBlank(paramTjsh.getYwy())) {
                paramTjsh.setYwy(com.vviton.zyhj.content.CommonConstants.YWY_WD);
            }
        }

        TYyxtHzglHzgxb hzgxbExit = tYyxtHzglHzgxbMapper.getHzgxbxx(paramTjsh.getZh(), paramTjsh.getYwy());
        List<ErrorBean> errorList = new ArrayList<ErrorBean>();
        if (hzgxbExit != null) {
            ErrorBean errorBean = new ErrorBean();
            errorBean.setErrorData(ValidatorConstants.E20001);
            errorList.add(errorBean);
            resultJson.setErrorList(errorList);
            return resultJson;
        }
        TYyxtHzglHzgxb hzgxb = new TYyxtHzglHzgxb();
        hzgxb.setHzfid(paramTjsh.getHzfid());
        hzgxb.setZh(paramTjsh.getZh());
        hzgxb.setHzfmc(paramTjsh.getHzfmc());
        hzgxb.setYwy(paramTjsh.getYwy());
        hzgxb.setId(this.getKey());
        hzgxb.setXyzt(CodeConstants.XYZT_DSH);
        hzgxb.setDelflag(CommonConstants.DELFLAG_ADD);
        hzgxb.setVersions(this.getVersion());
        hzgxb.setOperatercode(paramTjsh.getZh());
        hzgxb.setOperatetime(new Date());
        hzgxb.setCreatercode(paramTjsh.getZh());
        hzgxb.setCreatertime(new Date());
        int cnt = tYyxtHzglHzgxbMapper.insertTjsh(hzgxb);
        if (cnt > 0) {
            resultJson.setResult(true);
        }
        logger.info("新增提交审核结束");
        return resultJson;

    }

    /**
     * getHzgxbXyzt,根据账号获取协议状态. <br/>
     * Author: zhucb <br/>
     * Create Date: 2016年11月24日 <br/>
     * =============================================================== <br/>
     * Modifier: zhucb <br/>
     * Modify Date: 2016年11月24日 <br/>
     * Modify Description: <br/>
     * =============================================================== <br/>
     *
     * @param zh 账号
     * @param ywy 业务域
     * @return TYyxtHzglHzgxb
     * @since JDK 1.7
     */
    @Override
    public TYyxtHzglHzgxb getHzgxbXyzt(String zh, String ywy) {

        return tYyxtHzglHzgxbMapper.getHzgxbXyzt(zh, ywy);
    }

}
